package com.ytjj.quartz.dao;

import com.ytjj.qmyx.mall.model.ExtraAnalysis;
import com.ytjj.qmyx.mall.model.UsersAnalysis;
import com.ytjj.qmyx.users.model.UsersActive;
import com.ytjj.quartz.model.StatisticsUserResponse;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface UsersDao {

    Integer getUsersCount();

    Integer getUsersCountToday();

    Integer getCountBySource(String source);

    Integer getYestCountBySource(String source);

    Integer getTodayUsersNum(@Param("startTime") String startTime, @Param("endTime") String endTime);

    Integer getUsersNumBySource(@Param("source") String source,
                             @Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 获取App每日新增用户数
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return
     */
    Integer getAppAddUser(@Param("startTime") String startTime,
                                    @Param("endTime") String endTime);


    /**
     * 获取小程序每日新增用户数
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return
     */
    Integer getWeappAddUser(@Param("startTime") String startTime,
                          @Param("endTime") String endTime);


    /**
     * 获取App活跃用户
     *
     * @param startTime
     * @param endTime
     * @return
     */
    List<String> getAppActiveUser(@Param("startTime") String startTime,
                                         @Param("endTime") String endTime);



    /**
     * 获取每日活跃用户
     *
     * @param startTime
     * @param endTime
     * @return
     */
    List<UsersAnalysis> getActiveUser(@Param("startTime") String startTime,
                                      @Param("endTime") String endTime,
                                      @Param("platform") String platform);




    /**
     * @Description 获取每日新增用户数
     *
     *
     *
     * @Version 1.0
     **/
    List<StatisticsUserResponse> getAddUser(@Param("startTime") String startTime,
                                            @Param("endTime") String endTime,
                                            @Param("source") String source);



    /**
     * 获取小程序活跃用户
     *
     * @param startTime
     * @param endTime
     * @return
     */
    List<String> getWeappActiveUser(@Param("startTime") String startTime,
                             @Param("endTime") String endTime);


    /**
     * 获取uuid
     *
     * @param startTime
     * @param endTime
     * @param platform
     * @return
     */
    List<UsersAnalysis> getUuidList(@Param("startTime") String startTime,
                             @Param("endTime") String endTime);


    /**
     * 获取uuid
     *
     * @param startTime
     * @param endTime
     * @param platform
     * @return
     */
    List<UsersAnalysis> getNoChannelUuidList(@Param("startTime") String startTime,
                                            @Param("endTime") String endTime,
                                             @Param("platform") String platform);



    /**
     *
     * @param startTime
     * @param endTime
     * @param platform
     * @param uuid
     * @return
     */
    List<UsersAnalysis> getAliveUser(@Param("startTime") String startTime,
                                    @Param("endTime") String endTime,
                                    @Param("platform") String platform,
                                    @Param("channel") String channel,
                                    @Param("uuid") String uuid);


    List<UsersAnalysis> getNoChannelAliveUser(@Param("startTime") String startTime,
                                              @Param("endTime") String endTime,
                                              @Param("platform") String platform,
                                              @Param("uuid") String uuid);


    List<UsersAnalysis> getAndroidUuidList(@Param("startTime") String startTime,
                                           @Param("endTime") String endTime,
                                           @Param("platform") String platform,
                                           @Param("channel") String channel);


    List<UsersAnalysis> getAndroidAliveUser(@Param("startTime") String startTime,
                                            @Param("endTime") String endTime,
                                            @Param("platform") String platform,
                                            @Param("uuid") String uuid,
                                            @Param("channel") String channel);

    /**
     * 获取激活用户
     * @param platform
     * @param channel
     * @param startTime
     * @param endTime
     * @return
     */
    List<UsersActive> getUsersActive(@Param("platform") String platform,
                               @Param("channel") String channel,
                               @Param("startTime") String startTime,
                               @Param("endTime") String endTime);

    /**
     * 获取激活用户
     * @param startTime
     * @param endTime
     * @param platform
     * @return
     */
    List<UsersActive> getActiveUsersByPlat(@Param("startTime") String startTime,
                                     @Param("endTime") String endTime,
                                     @Param("platform") String platform);

    /**
     * 获取用户点击地址数
     *
     * @param source
     * @param startTime
     * @param endTime
     * @return
     */
    List<ExtraAnalysis> getAddressClickCount(@Param("startTime") String startTime,
                                             @Param("endTime") String endTime,
                                             @Param("source") String source);
}
